--协同程序 (线程)

--协程的创建
fun=function()
	print(123)
end

--第一种(常用)
co=coroutine.create(fun)
print(co)

--第二种
co2=coroutine.wrap(fun)
print(co2) --函数类型

--协程的运行
--第一种
coroutine.resume(co)

--第二种
co2()

--协程的挂起
fun2=function()
	local i=1
	while true do
		print(i)
		i=i+1

		print(coroutine.status(co3))
		print(coroutine.running())
		--协程挂起
		coroutine.yield(i) --i为返回值
	end
end

co3=coroutine.create(fun2)
isok,tempi=coroutine.resume(co3)
--第一个返回值协程是否返回成功，第二个返回值是yield中的返回值
print(tempi) --只有一个变量接受返回了true ，相当于启动成功。但第二个参数就是其返回值
coroutine.resume(co3)

co4=coroutine.wrap(fun2)
--这种方式的协程调用也可以有返回值，只是没有默认第一个返回值了
co4()
co4()
co4() --通过函数运行

--协程的状态
--三种状态，dead(结束),suspended(暂停),running(运行)
print(coroutine.status(co3))
print(coroutine.status(co))

--可以得到当前正在运行的协程号
print(coroutine.running())